#include <stdio.h>

int main()
{
    while (1)
    {
        int a = 0;
        printf("请输入0-100的数值\n");
        scanf("%d", &a);
        printf("输入 a-%d a-%c\n", a, a);

        if (a >= 60 && a < 80)
        {
            printf("C\n");
        }
        else if (a >= 80 && a < 90)
        {
            printf("B\n");
        }
        else if (a >= 90 && a <= 100)
        {
            printf("A\n");
        }
        else if (a >= 0 && a < 60)
        {
            printf("D\n");
        }
        else if (a == -1)
        {
            printf("退出\n");
            break;
        }
        else
        {
            printf("范围错误 0-100\n");
        }

        char x = getchar();
        printf("x读取的数据:c-%d c-%c\n", x, x);
        // 检查思考上述这种写法有什么问题？
    }

    return 0;
}

// scanf 的行为：

// scanf("%d", &a) 期望读取一个整数。

// 如果输入的是非数字（如 'a'），scanf 匹配失败，不会修改 a 的值，并返回 0（表示成功匹配的字段数）。

// 由于 a 初始化为 0，所以 a 保持 0。

// a-%c 的输出：

// %c 会输出 ASCII 码对应的字符。

// a = 0 的 ASCII 码是 NUL（空字符），终端通常不显示它，所以你会看到 a-（后面没有字符）。

// 输入缓冲区残留问题：

// 输入的 'a' 仍然留在输入缓冲区，可能导致后续输入错误（比如下一个 scanf 或 getchar 直接读取残留字符）